The thing is, your opponent is not going to keep a disadvantaged Pokemon in the match. If, say, you bring out a Blastoise, they're not going to leave their Charizard in there. However, if they don't know what attacks your Pokemon knows, you could use this to your advantage.
Just as an example. You send out a Blastoise with TMs taught it. The think "no problem" and send out Zapdos. You both have advantages, but your advantage is greater because your opponent doesn't know about it. So, when you cream them with Ice Beam, you can gloat. ^_^.
On the other hand, a Pokemon will more powerfully execute moves that are of its type. So prioritise; think each move carefully. (Obviously, you can't worry about teaching TMs to Pokemon like Dragonite or Chansey. ^_^.)
In the game, there are three means of raising Pokemon that will do your Pokemon a disservice in the long run. Meaning, it's not an ideal way of raising Pokemon if you want yours to be the strongest/have the best stats that they can.
Trading your Pokemon and having it gain boosted experience points. Unless you have to, it's probably not the best method.
No Pokemon type is unbeatable. Lots of people say ghosts have no weaknesses. This is rubbish. Ghosts are part-poison, which means they have a number of weaknesses. Psychic attacks, yes, and ground Pokemon. Or, a normal Pokemon with a ground or psychic move.
Psychics are a different kettle of fish. I will be honest; there are few Pokemon advantaged against them. Some you might like to try are Jolteon (pin missile, bug move) Beedrill (it learns some good bug attacks, but it IS part poison Pokemon, so beware), Paras/ect (leech life is bug attack) and Zubat (leech life is also bug, but Zubat is part poison).
In reality, this is a bit of nonsense. All bug moves are quite weak, and ghost moves will not be super effective (lick is, inexplicably, not affecting psychics at all, while Night Shade has a set amount of damage that doesn't take into account advantages). So you gotta work out what to use for individual psychic types.
Pokemon like Slowbro, Starmie and Exeggutor are okay, being dual-type and thus having more disadvantages. If you're fighting the Abra clan, they have very bad defense, so hit them with a non-special move.
Special moves are anything of elemental types (ie ice, grass, fire, psychic) while non-special are anything of physical types (ie ground, poison, flying, normal). Pokemon have five statistics each; HP, attack, defense, speed and special. Attack is how well your Pokemon can execute non-special moves, while defense is how well they can take non-special moves. Speed determines which Pokemon will get the first hit in, and special applies to attack *and* defense with special moves.
Also, some Pokemon have double-disadvantages to types, because they are dual-type. Take Parasect, for example. It's bug/grass. So fire, poison and flying ALL do a lotta damage, since they are effective against both Parasect's types. On the other hand, if an attack is super effective against one of a Pokemon's two types but not effective against another, the two will cancel each other out. What you see on the screen is meaningless. (For example; use Icebeam on a Gyarados. It says it is super effective. But since ice is bad against water and good on flying, the two really cancel each other out, and do a normal amount of damage.)
These two explain why Pokemon like Onix are so very weak against water (not only is water strong against BOTH its types, ground/rock, but it is a special move, and Onix has a low special), while being able to withstand fighting or ground moves, which they are also disadvantaged against, so well (they have very good defense).
As far as Mewtwo, that Pokemon is just annoying. Most kids use it. It has great stats for everything (except defense, which is still decent), psychics have no real type disadvantage, it has the highest special in the game, it can learn scads of different types of moves, and it learns both amnesia (puts its special up so high you can barely touch it with a special attack, while its own special attacks are super powerful) AND recover. It has overall much the best stats in the game, comes at a high level and in short, is CHEAP. They shouldn't have put that Pokemon in the game. It's not fair for those of us who loathe the stupid mutant cat but have to face people who have it.
Lots of people over the age of 12 seem to hate Mewtwo also. ^_^. This has spawned the concept of "Mewtwo killers". Two of these are Chansey and Exeggutor.
Chansey's extreme HP can allow for one to use a payback attack like Bide or Counter. Or, as Chansey-with-softboiled can continually heal itself, technique can be used to keep Chansey alive while wearing down Mewtwo and forcing it to use Recover until the pp for that move is gone. Chansey has a decent special, so a shot from Mewtwo won't kill it instantly, but there are still disadvantages to using the good luck Pokemon.
Exeggutor, I chose to raise one, I find it pretty good. It's the most powerful grass type, and, its good stats are attack and special. These are important against a Mewtwo. (High attack allows one to exploit Mewtwo's weakest stat, defense, while high special means that one can survive a few hits from it.) Add this to the fact that Exeggutor is part-psychic, meaning it has some natural defense to psychic moves, and you have something that could potentially knock that cat flat.
And of course, if you become desperate, you can always raise a Mewtwo of your own. >_<.
I think psychic type has more disadvantages in gold and silver. Hooray! ^_^.
Sometimes good moves depend on the stats of the Pokemon. For example, Pokemon with higher attack can get away with using good normal attacks, whereas ones with great special do well with elemental attacks. It's good to get a Pokemon that has good stats relating to its type. (For example, a water type preferably should have good special, since that's what it uses for its type attacks.)
Try to go away from the norm. Venusaur, Blastoise, Charizard, Mewtwo, Gyarados, Raichu... yes, they are all quite powerful Pokemon, potentially. But, it's kind of a boring team. As in, predictable. Other common ones are Golem, Machamp, Gengar, Alakazam, Pidgeot... good Pokemon, but there are lots of good Pokemon who are often underestimated.
Try out a few different ones, see which suit you. Serious gamers, like, the ones who play against other people to win, get their Pokemon to L100 and take care with what moves they teach, will obviously go for ones with high stats and ability to use good strategy. Whereas people who play for fun can appreciate any Pokemon they like. It's possible to finish the game with almost any Pokemon (well, except maybe, like Caterpie/Weedle, Magikarp, etcetera), regardless of how they'd perform in link battles, so long as you train them to a decent level.
As far as which Pokemon you should choose at the beginning of the game, it's really a matter of personal choice. If you look at the final forms, both Venusaur and Charizard are dual-type, meaning more disadvantages. Also, water Pokemon have more type advantages. Basically, I'm plugging Blastoise ^_^. but any of the three will serve you fine.
The three starter Pokemon aren't brilliant; not BAD, just fairly typical, for their type. There's no rule that you have to keep the one you choose on your main team. I hardly ever do, except for my first game. There are others that do fine. If you didn't choose Bulbasaur at the start of the game, but really want a good grass/poison type, a Bellsprout or Oddish will do just as fine. Some good fires are Arcanine, Flareon... well, most are good. And as for waters, we won't go into that, too many. Whatever floats your boat (haha, boat, water, get it? *is thwapped*)
What else is there to strategy... obviously, a way to level up weak Pokemon is to put them at the top of your list, then retreat them and send out a strong Pokemon to fight the opponent. This is a good technique for any Pokemon you don't feel like raising at the start of the game. Need a Kakuna/Beedrill to complete your collection? Take a Weedle into Pokemon League. After one battle, it will jump several levels from all the experience it gets.
However... this can be boring. The best thing to do, in my opinion, is to, if you have played the game before, have some vague idea of what Pokemon you want to raise, then as you go through the game and get each of those Pokemon, just keep it with you on your team. If you challenge every trainer you meet, you will get your Pokemon plenty of experience, so that fighting wild ones won't be so necessary.
The best place to raise Pokemon (in terms of time, sometimes stats can suffer if you train your Pokemon solely against the Elite) is Pokemon League, battling Lorelei and company. This mightn't be so good for low level Pokemon however, especially if the rest of your team isn't so high either; retreating your Pokemon and sending in another gives Lorelei the chance to strike first, and maybe come close to fainting you.
Pokemon League is also good, because you get more money. This is useful towards saving up so you can go through the tedious process (why do you only get 50 coins at once?! Why, why, why?) of getting a Porygon.
The next best place is the Unknown Dungeon. Don't bother with Ditto. They give hardly any experience. Cinnabar is good for lower level ones (20 - 50 ish), and is where I raised most of mine before heading to Pokemon League for the first time.
It depends on where you are in the game, and what type of Pokemon you are training. Ground types are wonderful, you can raise them at the Power Plant, or Cinnabar without any disadvantages (for example, raising waters goes well at Cinnabar, but if a poison Pokemon appears instead of a fire one, there goes your advantage). Also, raise electric types at Sea Foam, low-level waters at Diglett Tunnel, flyings at Victory Road, etc...
The lower the level you catch your Pokemon at, the stronger it can become. A L52 Arbok that you caught as a L6 Ekans and raised yourself, will be much more powerful than a L52 Arbok caught in the unknown dungeon.
Pokemon of the same species can have different stats. If you're a serious trainer or something, and wanna raise the best Pokemon possible, try catching a few of the Pokemon at the same level, comparing stats, and then choosing the best.
Also, evolution is not always necessary, although once again, if you're serious, it is. Some Pokemon are fine in their unevolved state, and it's really a matter of personal choice. Pokemon take longer to learn new attacks and reach new levels after evolution, so you may want to wait some time. On the plus side, they get a boost in stats/HP after evolving. In some Pokemon, this is quite impressive. Try evolving a Shellder, and check out that defense! o.O.
There are a few that are relatively useless unevolved. These are Caterpie/Metapod, Weedle/Kakuna, and Magikarp. As far as I know, none of these fellows can learn new attacks or even TMs until they evolve.
As far as stone-induced evolution goes, beware. When you evolve your Pokemon, they will NOT learn any new attacks. This discludes Eevee, obviously, and I do believe Exeggutor and Cloyster each can learn one attack their unevolved forms can't.
I didn't realise this at first. I thought stones were cool, and as soon as I found a Moonstone, evolved my Clefairy. Now I have a L10, weak, useless, Clefable. Also, a Raichu which learned little beyond Thundershock. Do not be an idiot as I was.
Keep your TMs well. Some are gold. Use them well. Good TMs, in my opinion, include but are not restricted to:
Thunder, Thunderbolt, Ice Beam, Psychic, Bubblebeam, Dig, Earthquake, Softboiled, Body Slam, etc... generally powerful moves with sane pp.
But others can be useful, like if you're raising a Pokemon just for the sake of evolving it to fill your Pokedex. Like, you could teach a water type that didn't know any water moves, Water Gun, so it could have an advantage over some types and thus be easier to raise.
Surf, Strength and Fly are good attacks, and can be taught as many times as you like. But you can't delete those attacks, so be careful.
It pains me to say this, but having one or two super-strong Pokemon is better than having a team of six fairly-strong Pokemon. If your main goal is to win, not to have a team that can handle all comers, raise a couple of Pokemon very strong.
I'll use my cousin as an example. I faced him with a team of six Pokemon around L70. His Pokemon were around L50, so I thrashed four of his easily. Except, his two trump cards... a L86 Blastoise and L86 Mewtwo. Because few things are super effective against a Mewtwo, I didn't have a hope.
If you use this technique, choose your two Pokemon well. I wouldn't recommend, say... *thinks* a Fearow. Fearow are great Pokemon, however they are weak against ice and electric, elements which strongly affect it. Additionally, it does not have a strong defense.
I don't like to do that though. I like all my Pokemon to be able to fare well in a battle. It's all a matter of opinion. But the fact remains, no matter how strong I get my Pokemon, his two are always about 10 levels above me, and so they always win, regardless of my advantage or not.
The infamous Necrosaro's Pokemon Page has where the Pokemon rank in terms of their stats, among other things.